From: Dan Winship Date: Thu, 14 Oct 2010 14:38:33 +0000 (-0400) Subject: main: use Meta.Display.get_keybinding_action for PrintScreen as well X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~9617 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=c217377114a4e885e352d95ac91121ba445810f7;p=gnome-shell.git main: use Meta.Display.get_keybinding_action for PrintScreen as well (and trigger it on keyrelease rather than keypress, like the other bindings) https://bugzilla.gnome.org/show_bug.cgi?id=632151 --- diff --git a/js/ui/main.js b/js/ui/main.js index cc017e32d..8e46209e6 100644 --- a/js/ui/main.js +++ b/js/ui/main.js @@ -292,13 +292,30 @@ function _removeUnusedWorkspaces() { function _globalKeyPressHandler(actor, event) { if (modalCount == 0) return false; + if (event.type() != Clutter.EventType.KEY_RELEASE) + return false; + + let symbol = event.get_key_symbol(); + let keyCode = event.get_key_code(); + let modifierState = Shell.get_event_state(event); + // Check the overview key first, this isn't a Meta.KeyBindingAction yet + if (symbol == Clutter.Super_L || symbol == Clutter.Super_R) { + // The super key is the default for triggering the overview, and should + // get us out of the overview when we are already in it. + if (overview.visible) + overview.hide(); + + return true; + } - let type = event.type(); + // Whitelist some of the Metacity actions + let display = global.screen.get_display(); + let activeWorkspaceIndex = global.screen.get_active_workspace_index(); - if (type == Clutter.EventType.KEY_PRESS) { - let symbol = event.get_key_symbol(); - if (symbol == Clutter.Print) { - // We want to be able to take screenshots of the shell at all times + // This relies on the fact that Clutter.ModifierType is the same as Gdk.ModifierType + let action = display.get_keybinding_action(keyCode, modifierState); + switch (action) { + case Meta.KeyBindingAction.COMMAND_SCREENSHOT: let gconf = GConf.Client.get_default(); let command = gconf.get_string('/apps/metacity/keybinding_commands/command_screenshot'); if (command != null && command != '') { @@ -306,41 +323,17 @@ function _globalKeyPressHandler(actor, event) { let p = new Shell.Process({'args' : args}); p.run(); } - return true; - } - } else if (type == Clutter.EventType.KEY_RELEASE) { - let symbol = event.get_key_symbol(); - let keyCode = event.get_key_code(); - let modifierState = Shell.get_event_state(event); - // Check the overview key first, this isn't a Meta.KeyBindingAction yet - if (symbol == Clutter.Super_L || symbol == Clutter.Super_R) { - // The super key is the default for triggering the overview, and should - // get us out of the overview when we are already in it. - if (overview.visible) - overview.hide(); - + case Meta.KeyBindingAction.WORKSPACE_LEFT: + wm.actionMoveWorkspaceLeft(); + return true; + case Meta.KeyBindingAction.WORKSPACE_RIGHT: + wm.actionMoveWorkspaceRight(); + return true; + case Meta.KeyBindingAction.PANEL_RUN_DIALOG: + case Meta.KeyBindingAction.COMMAND_2: + getRunDialog().open(); return true; - } - - // Whitelist some of the Metacity actions - let display = global.screen.get_display(); - let activeWorkspaceIndex = global.screen.get_active_workspace_index(); - - // This relies on the fact that Clutter.ModifierType is the same as Gdk.ModifierType - let action = display.get_keybinding_action(symbol, keyCode, modifierState); - switch (action) { - case Meta.KeyBindingAction.WORKSPACE_LEFT: - wm.actionMoveWorkspaceLeft(); - return true; - case Meta.KeyBindingAction.WORKSPACE_RIGHT: - wm.actionMoveWorkspaceRight(); - return true; - case Meta.KeyBindingAction.PANEL_RUN_DIALOG: - case Meta.KeyBindingAction.COMMAND_2: - getRunDialog().open(); - return true; - } } return false;